/*
*********************************************************************************************************
*                                              uC/TFTPs
*                               Trivial File Transfer Protocol (server)
*
*                    Copyright 2004-2020 Silicon Laboratories Inc. www.silabs.com
*
*                                 SPDX-License-Identifier: APACHE-2.0
*
*               This software is subject to an open source license and is distributed by
*                Silicon Laboratories Inc. pursuant to the terms of the Apache License,
*                    Version 2.0 available at www.apache.org/licenses/LICENSE-2.0.
*
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*
*                                             TFTP SERVER
*
* Filename : tftp-s_type.h
* Version  : V2.01.00
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*********************************************************************************************************
*                                               MODULE
*
* Note(s) : (1) This header file is protected from multiple pre-processor inclusion through use of the
*               TFTPs present pre-processor macro definition.
*********************************************************************************************************
*********************************************************************************************************
*/

#ifndef  TFTPs_TYPE_MODULE_PRESENT                              /* See Note #1.                                         */
#define  TFTPs_TYPE_MODULE_PRESENT


/*
*********************************************************************************************************
*********************************************************************************************************
*                                           INCLUDE FILES
*********************************************************************************************************
*********************************************************************************************************
*/

#include  <cpu.h>


/*
*********************************************************************************************************
*********************************************************************************************************
*                                              DATA TYPES
*********************************************************************************************************
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                         IP TYPE DATA TYPE
*********************************************************************************************************
*/

typedef enum tftps_sock_sel {
    TFTPs_SOCK_SEL_IPv4,
    TFTPs_SOCK_SEL_IPv6,
    TFTPs_SOCK_SEL_IPv4_IPv6
} TFTPs_SOCK_SEL;


/*
*********************************************************************************************************
*                                     TASK CONFIGURATION DATA TYPE
*
* Note(s): (1) When the Stack pointer is defined as null pointer (DEF_NULL), the task's stack should be
*              automatically allowed on the heap of uC/LIB.
*********************************************************************************************************
*/

typedef  struct  tftps_task_cfg {
    CPU_INT32U   Prio;                                          /* Task priority.                                       */
    CPU_INT32U   StkSizeBytes;                                  /* Size of the stack.                                   */
    void        *StkPtr;                                        /* Pointer to base of the stack (see Note #1).          */
} TFTPs_TASK_CFG;


/*
*********************************************************************************************************
*                                       CONFIGURATION DATA TYPE
*********************************************************************************************************
*/

typedef  struct  tftps_cfg {
    TFTPs_SOCK_SEL  SockSel;
    CPU_INT16U      Port;
    CPU_INT32U      RxTimeoutMax;
    CPU_INT32U      TxTimeoutMax;
} TFTPs_CFG;


/*
*********************************************************************************************************
*********************************************************************************************************
*                                             MODULE END
*********************************************************************************************************
*********************************************************************************************************
*/

#endif  /* TFTPs_TYPE_MODULE_PRESENT  */
